<?php
class Design_Controller extends Template_Controller {

	public $template = 'client/index';
	public $language = '';
    public function __construct()
    {
        parent::__construct();
        
        //Css
        //$this->template->css = $this->site['theme_url'].'article/article.css';
       	$this->language = $this->get_client_lang();
    }
    
	public function __call($method, $arguments)
	{
		// Disable auto-rendering
		$this->auto_render = FALSE;
	}
	
    public function index()
    {	
		$this->page();
		
    }
    public function page()
    {
    	$language= $this->get_client_lang();
		$this->template->content = new View('design/index');
		$model = new Designs_Model(); 
		//$this->db->limit(10,0);	
		$mDesigns = $model->get_with_active($this->language);
		$this->template->content->mDesigns= $mDesigns;
		
		//
		$model = new Cate_design_Model(); 
		$mCate = $model->get_with_active($this->language);
		$this->template->content->mCate= $mCate;
    }
    public function detail($id)
    {
    	$this->template->content = new View('design/detail');
    	$language = $this->get_client_lang();
		$model = new Designs_Model(); 
		$this->db->where('designs.designs_id',$id);
		$mlist = $model->get_with_active($language);
    	$this->template->content->mr = $mlist[0];
		
		$model = new Cate_design_Model(); 
		$this->db->where('cate_design.cate_design_id',$mlist[0]['cate_design_id']);
		$mCate = $model->get_with_active($this->language);
		$this->template->content->mCate= $mCate[0];
		
		$mlistOther = $this->other_designs($id,$mlist[0]['cate_design_id']);
		//print_r($mlistOther);
		$this->template->content->mlistOther = $mlistOther;
    }
	
	public function other_designs($id,$cate_id='')

    {

    	$language = $this->get_client_lang();

		$model = new Designs_Model(); 

		$this->db->where('designs.designs_id <>',$id);
		$this->db->where('designs.cate_design_id',$cate_id);
		$mlist = $model->get_with_active($language);

    	return $mlist;

    }
	public function save()

    {
		$record = $this->_get_record();
    	//print_r($record);
    	if($record)
    	{
    		$this->send_email($record);
    	}
    	
    	url::redirect('design');
		die();

    }
	 private function _get_record()

    {
		
		
    	$form = array
	    (
	        'Name' => '',
	        'Email' => '',
	        'Organization' => '',
	        'Address' => '',
			'Phone' => '',
			'Mobile' => '',
			'txt_program' => '',	
			
							
	    );
		
    	$errors = $form;
		if($_POST)
    	{
    		$post = new Validation($_POST);
    		
			$post->pre_filter('trim', TRUE);
			/*$post->add_rules('txt_name','required');
			$post->add_rules('txt_email','required','email');
			$post->add_rules('txt_subject','required');
			$post->add_rules('txt_content','required');
			//$post->add_callbacks('txt_random',array($this,'_check_security_code'));
			$post->add_rules('sel_send','trim');*/
			
			if($post->validate())
 			{
 				$form = arr::overwrite($form, $post->as_array());
				
 				return $form;
			} else {
				$errors = arr::overwrite($errors, $post->errors('contact_validation'));
				$error_msg = '';
				foreach($errors as $id => $name) 
					if($name) $error_msg .= '<br>'.$name;
				$this->session->set_flash('error_msg',$error_msg);
				
				url::redirect('design');
				die();
			}
        }
    }
	private function send_email($record)
    {
    	
		//print_r($record);
		$listPorgram = $record['txt_program'];
		$name = $record['Name'];
		$email = $record['Email'];
		$Organization = $record['Organization'];
		$Address = $record['Address'];
		$Phone = $record['Phone'];
		$Mobile = $record['Mobile'];
		$subject = 'Thiết kế chương trình học';
		
		
		if(!empty($listPorgram)){
		$id='';
			foreach(@$listPorgram as $list){
			$id .=$list.',';
			
			}
			$idd = "(".substr($id,0,-1).")";
			echo $idd;
			//echo $idPro;
			$language = $this->get_client_lang();

			$model = new Designs_Model(); 
	
			$this->db->in('designs.designs_id',$listPorgram);
			$mPrograms = $model->get_with_active($language);
			
		}
		//die();
		
		
	$html_content='';	
		
//=========================
		if(!empty($listPorgram)){
				$html_content .= "<table width='99%' border='1' cellspacing='0' cellpadding='5' style='border-collapse:collapse'>
			  <tr>
				<td colspan='2' class='title_special' >". Kohana::lang('registers_lang.lbl_program')."</td>
				</tr>	  ";
			  $i=0;
			  foreach($mPrograms as $list){ 
			  $i++;
			  $html_content .=  "
			  <tr>
				<td width='5%' valign='top'>".$i."</td>
				<td width='61%' valign='top'>".  $list['designs_title']."</td>
				
			  </tr>";
			  } 
			 
			 $html_content .=  "</table>";
			 
	 }
	
		$html_content .="<table width='100%' border='0' cellspacing='0' cellpadding='2'>
  <tr>
    <td width='19%'>&nbsp;</td>
    <td width='81%'>&nbsp;</td>
  </tr>
  <tr>
    <td colspan='2'><strong>".Kohana::lang('registers_lang.lbl_program_info_company')."</strong></td>
  </tr>
  <tr>
    <td>". Kohana::lang('registers_lang.lbl_organization')."</td>
    <td>".$Organization."</td>
  </tr>
  <tr>
    <td>". Kohana::lang('registers_lang.lbl_street_address')."</td>
    <td>".$Address."</td>
  </tr>
  <tr>
    <td>". Kohana::lang('registers_lang.lbl_phone')."</td>
    <td>".$Phone."</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
   <tr>
    <td>Email</td>
    <td>".$email."</td>
  </tr>
</table>";

$this->SendMail($email,"training@dalecarnegie.com.vn",$subject,$html_content,$name);

    }
	public function server_parse($socket, $response)
	{
	   $server_response = '';
	   while ( substr($server_response,3,1) != ' ' )
	   {
		  if( !( $server_response = fgets($socket, 256) ) )
		  {
			 echo "Couldn't get mail server response codes";
		  }
	   }
	
	   if( !( substr($server_response, 0, 3) == $response ) )
	   {
		  echo "Ran into problems sending Mail. Response: $server_response";
	   }
	}
	
	/****************************************************************************
	*        Function:                 smtpmail
	*        Description:         This is a functional replacement for php's builtin mail
	*                                                function, that uses smtp.
	*        Usage:                        The usage for this function is identical to that of php's
	*                                                built in mail function.
	****************************************************************************/
	public function smtpmail($mail_to, $subject, $message, $headers='',$smtp_host, $smtp_username, $smtp_password, 
	
	$admin_email)
	{
	//global $smtp_host, $smtp_username, $smtp_password, $admin_email;
	//echo $to_mail.$subject.$message.$headers.$smtp_host.$smtp_username.$smtp_password;
	
			//
			// Fix any bare linefeeds in the message to make it RFC821 Compliant.
			//
			$message = preg_replace("/(?<!\r)\n/si", "\r\n", $message);
			
	   /*echo "SMTP_HOST".$smtp_host;
	   echo "<br>\nSMTP_USER".$smtp_user;
	   echo "<br>\nSMTP_PW".$smtp_password;
	   echo "<br>\nADMIN".$admin_email; */
	
			if ($headers != "")
			{
					if(is_array($headers))
					{
							if(sizeof($headers) > 1)
							{
									$headers = join("\r\n", $headers);
							}
							else
							{
									$headers = $headers[0];
							}
					}
					$headers = chop($headers);
	
					//
					// Make sure there are no bare linefeeds in the headers
					//
					$headers = preg_replace("/(?<!\r)\n/si", "\r\n", $headers);
					//
					// Ok this is rather confusing all things considered,
					// but we have to grab bcc and cc headers and treat them differently
					// Something we really didn't take into consideration originally
					//
					$header_array = explode("\r\n", $headers);
					@reset($header_array);
					$headers = "";
					$cc = '';
					$bcc = '';
					while( list(, $header) = each($header_array) )
					{
							if( preg_match("/^cc:/si", $header) )
							{
									$cc = preg_replace("/^cc:(.*)/si", "\\1", $header);
							}
							else if( preg_match("/^bcc:/si", $header ))
							{
									$bcc = preg_replace("/^bcc:(.*)/si", "\\1", $header);
									$header = "";
							}
							$headers .= $header . "\r\n";
					}
					$headers = chop($headers);
					$cc = explode(",", $cc);
					$bcc = explode(",", $bcc);
			}
	
	
			if(trim($mail_to) == "")
			{
					exit();
			}
			if(trim($subject) == "")
			{
					die("No email Subject specified");
			}
	
			$mail_to_array = explode(",", $mail_to);
	
			//
			// Ok we have error checked as much as we can to this point let's get on
			// it already.
			//
			if( !$socket = fsockopen($smtp_host, 25, $errno, $errstr, 20) )
			{
					die("Could not connect to smtp host : $errno : $errstr");
			}
			$this->server_parse($socket, "220");
	
			if( !empty($smtp_username) && !empty($smtp_password) )
			{
					// Send the RFC2554 specified EHLO.
					// This improved as provided by SirSir to accomodate
					// both SMTP AND ESMTP capable servers
					fputs($socket, "EHLO " . $smtp_host . "\r\n");
					$this->server_parse($socket, "250");
	
					fputs($socket, "AUTH LOGIN\r\n");
					$this->server_parse($socket, "334");
					fputs($socket, base64_encode($smtp_username) . "\r\n");
					$this->server_parse($socket, "334");
					fputs($socket, base64_encode($smtp_password) . "\r\n");
					$this->server_parse($socket, "235");
			}
			else
			{
					// Send the RFC821 specified HELO.
					fputs($socket, "HELO " . $smtp_host . "\r\n");
					$this->server_parse($socket, "250");
			}
	
			// From this point onward most server response codes should be 250
			// Specify who the mail is from....
			fputs($socket, "MAIL FROM: <" . $admin_email . ">\r\n");
			$this->server_parse($socket, "250");
	
			// Specify each user to send to and build to header.
			$to_header = "To: ";
			@reset( $mail_to_array );
			while( list( , $mail_to_address ) = each( $mail_to_array ))
			{
					//
					// Add an additional bit of error checking to the To field.
					//
					$mail_to_address = trim($mail_to_address);
					if ( preg_match('/[^ ]+\@[^ ]+/', $mail_to_address) )
					{
							fputs( $socket, "RCPT TO: <$mail_to_address>\r\n" );
							$this->server_parse( $socket, "250" );
					}
					$to_header .= "<$mail_to_address>, ";
			}
			// Ok now do the CC and BCC fields...
			@reset( $bcc );
			while( list( , $bcc_address ) = each( $bcc ))
			{
					//
					// Add an additional bit of error checking to bcc header...
					//
					$bcc_address = trim( $bcc_address );
					if ( preg_match('/[^ ]+\@[^ ]+/', $bcc_address) )
					{
							fputs( $socket, "RCPT TO: <$bcc_address>\r\n" );
							$this->server_parse( $socket, "250" );
					}
			}
			@reset( $cc );
			while( list( , $cc_address ) = each( $cc ))
			{
					//
					// Add an additional bit of error checking to cc header
					//
					$cc_address = trim( $cc_address );
					if ( preg_match('/[^ ]+\@[^ ]+/', $cc_address) )
					{
							fputs($socket, "RCPT TO: <$cc_address>\r\n");
							$this->server_parse($socket, "250");
					}
			}
			// Ok now we tell the server we are ready to start sending data
			fputs($socket, "DATA\r\n");
	
			// This is the last response code we look for until the end of the message.
			$this->server_parse($socket, "354");
	
			// Send the Subject Line...
			fputs($socket, "Subject: $subject\r\n");
	
			// Now the To Header.
			fputs($socket, "$to_header\r\n");
	
			// Now any custom headers....
			fputs($socket, "$headers\r\n\r\n");
	
			// Ok now we are ready for the message...
			fputs($socket, "$message\r\n");
	
			// Ok the all the ingredients are mixed in let's cook this puppy...
			fputs($socket, ".\r\n");
			$this->server_parse($socket, "250");
	
			// Now tell the server we are done and close the socket...
			fputs($socket, "QUIT\r\n");
			fclose($socket);
	
			return TRUE;
	}
	public function SendMail($frommail,$tomail,$subject,$message,$fromfullname)
	{
	
	
		  $from= $fromfullname." <".$frommail.">";
		  $headers ="Return-Path: ".$fromfullname." <".$frommail.">\r\n";
		  $headers.="From: $from\nX-Mailer: ".$fromfullname."\r\n";
		  $headers .="Mime-Version: 1.0\r\n";
		  $headers .="Content-type: text/html; charset=utf-8\r\n";
		  $smtp_host ='localhost';//Dia chi mail server
		  $admin_email = 'training@dalecarnegie.com.vn';//User duoc khai bao tren mail server
		  $smtp_username = 'training@dalecarnegie.com.vn';//User duoc khai bao tren mail server
		  $smtp_password = 'Account9';//Pass cua email nay
		  $result = $this->smtpmail($tomail,$subject,$message,$headers,$smtp_host, $smtp_username, $smtp_password, $admin_email);
	
	}
}
?>